// src/api/chartData.js
import {chartDataMapper} from '@/mapper/chart-data-mapper';

/**
 * 保存一条图表数据
 * @param {string|null} sn 产品条码/序列号
 * @param {Object} dataValues 包含多个监控地址值的对象
 * @param {string|null} sessionId 会话ID
 * @returns {number|null} 插入记录的ID
 */
export function saveChartData(sn, dataValues, sessionId = null) {
    return chartDataMapper.saveChartData(sn, dataValues, sessionId);
}

/**
 * 批量保存多条图表数据
 * @param {Array} dataEntries 数据条目数组，每个条目包含 {sn, dataValues, sessionId}
 * @returns {number} 成功插入的记录数
 */
export function saveBatchChartData(dataEntries) {
    return chartDataMapper.saveBatchChartData(dataEntries);
}

/**
 * 按时间范围查询数据
 * @param {number} startTime 开始时间戳（毫秒）
 * @param {number} endTime 结束时间戳（毫秒）
 * @param {string|null} sn 产品条码/序列号
 * @returns {Array} 查询结果数组
 */
export function getDataByTimeRange(startTime, endTime, sn = null) {
    return chartDataMapper.getDataByTimeRange(startTime, endTime, sn);
}

/**
 * 获取最新的N条数据
 * @param {number} limit 限制返回的记录数
 * @param {string|null} sn 产品条码/序列号
 * @returns {Array} 查询结果数组
 */
export function getLatestData(limit = 100, sn = null) {
    return chartDataMapper.getLatestData(limit, sn);
}

/**
 * 获取特定条码的数据
 * @param {string} sn 产品条码/序列号
 * @param {number} limit 限制返回的记录数
 * @returns {Array} 查询结果数组
 */
export function getDataBySN(sn, limit = 1000) {
    return chartDataMapper.getDataBySN(sn, limit);
}

/**
 * 清理指定天数之前的数据
 * @param {number} daysToKeep 要保留的天数
 * @returns {number} 清理的记录数
 */
export function cleanupOldData(daysToKeep = 30) {
    return chartDataMapper.cleanupOldData(daysToKeep);
}

/**
 * 导出数据为CSV格式
 * @param {number} startTime 开始时间戳（毫秒）
 * @param {number} endTime 结束时间戳（毫秒）
 * @param {string|null} sn 产品条码/序列号
 * @returns {string} CSV格式的数据
 */
export function exportData(startTime, endTime, sn = null) {
    return chartDataMapper.exportData(startTime, endTime, sn);
}

/**
 * 获取数据统计信息
 * @param {number} startTime 开始时间戳（毫秒）
 * @param {number} endTime 结束时间戳（毫秒）
 * @param {Array} parameters 要统计的参数列表
 * @param {string|null} sn 产品条码/序列号
 * @returns {Object} 统计信息
 */
export function getDataStatistics(startTime, endTime, parameters = [], sn = null) {
    return chartDataMapper.getDataStatistics(startTime, endTime, parameters, sn);
}
